package cc.rengu.igas.momp.common.dao;

import cc.rengu.igas.momp.common.entity.TMMcMchntInfo;
import cc.rengu.igas.momp.common.entity.TMMcUserInfo;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * 营销活动用户规则数据库操作接口定义
 *
 * @author Jinan Liu
 * @version 1.0.0
 * @date 2020/3/26 00:11
 */
public interface McUserInfoMapper {

    /**
     * 营销活动用户规则列表查询数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMMcUserInfo>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:59
     */
    List<TMMcUserInfo> selectMcUserInfoList(String instId, String mcNo) throws Exception;

    /**
     * 查询用户列表
     * 分页模式
     *
     * @param pageInfo 数据库操作分页实体类
     * @return cc.rengu.oltp.utility.bean.PageResult 查询结果列表
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2021/3/24 15:04
     */
    PageResult selectMcUserInfoList(String instId, String mcNo, PageInfo pageInfo) throws Exception;

    /**
     * 营销活动用户规则列表新增数据库操作接口定义
     *
     * @param mcUserInfoList 营销活动用户信息表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/1 22:01
     */
    int insertMcUserInfoListByBank(List<TMMcUserInfo> mcUserInfoList) throws Exception;

    /**
     * 营销活动用户规则列表修改数据库操作接口定义
     *
     * @param mcUserInfoList
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/1 22:01
     */
    int updateMcUserInfoListByBank(List<TMMcUserInfo> mcUserInfoList) throws Exception;

    /**
     * 营销活动用户规则列表删除数据库操作接口定义
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/1 22:01
     */
    int deleteMcUserInfoListByBank(String instId, String mcNo) throws Exception;

    /**
     * 新增单条营销活动用户信息数据库操作定义
     *
     * @param instId     法人机构号
     * @param mcUserInfo
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/2 00:07
     */
    int insertMcUserInfo(String instId, TMMcUserInfo mcUserInfo) throws Exception;

    /**
     * 更新单条营销活动用户信息数据库操作定义
     *
     * @param instId     法人机构号
     * @param mcUserInfo
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/2 00:07
     */
    int updateMcUserInfo(String instId, TMMcUserInfo mcUserInfo) throws Exception;

    /**
     * 使用主键删除单条营销活动用户信息数据库操作定义
     *
     * @param instId   法人机构号
     * @param mcNo     营销活动编号
     * @param acctNo
     * @param acctType
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/2 00:07
     */
    int deleteMcUserInfoByPrimaryKey(String instId, String mcNo, String acctNo, String acctType) throws Exception;

    /**
     * 使用主键查询单条营销活动用户信息数据库操作定义
     *
     * @param instId   法人机构号
     * @param mcNo     营销活动编号
     * @param acctNo
     * @param acctType
     * @return int
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/2 00:07
     */
    int selectMcUserInfoByPrimaryKey(String instId, String mcNo, String acctNo, String acctType) throws Exception;


    /**
     * 使用法人机构号、营销活动编号和用户ID获取营销活动用户信息数据库操作定义
     * 查询成功返回0
     * 查询失败返回-1
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @param acctNo 账号
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/21 10:31
     */
    int selectSingleMcUserInfoByUserId(String instId, String mcNo, String acctNo) throws Exception;

    /**
     * 营销活动用户信息列表查询接口实现
     *
     * @param instId 法人机构号
     * @param mcNo   营销活动编号
     * @param acctNo 账号
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMMcUserInfo>
     * @throws Exception 异常信息
     * @author JL PANG
     * @date 2020/9/28 00:24
     */
    List<TMMcUserInfo> selectMcUserInfoListByInstIdMcNoAcctNo(String instId, String mcNo, String acctNo) throws Exception;

}
